package com.cyk.demo2.test

import kotlinx.coroutines.*
import kotlin.coroutines.coroutineContext


//class Coin(val value: Int) {
//    operator fun plus(value: Int): Coin {
//        val sum = this.value + value
//        return Coin(sum)
//    }
//}



//fun test(num1: Int, num2: Int, func: (Int, Int) -> Int) = func(num1, num2)

//inline fun taskRun(crossinline task: () -> Unit) {
//    Runnable() {
//        task()
//    }.run()
//}

//class ApiResp<T> {
//
//    private var data: T? = null
//
//    fun setData(data: T) {
//        this.data = data
//    }
//
//}

//fun <T: Number> result(value: T): T {
//    return value
//}
//
//fun <T> T.myApply(func: T.() -> Unit): T {
//    func()
//    return this
//}

//class MySet<T> (val helpSet: HashSet<T>): Set<T> by helpSet {
//
//    override fun contains(element: T): Boolean {
//        println("在原有接口基础上更改了一些逻辑")
//        return helpSet.contains(element)
//    }
//
//    //定义自己的方法
//    fun newFunc() {
//        println("这是一个新的方法")
//    }
//
//}

//class Test {
//    var value by TestHelp()
//}
//
//class TestHelp {
//
//    var valueHelp: Any? = null
//
//    //必须要实现 get 和 set 方法
//    operator fun getValue(test: Test, property: KProperty<*>): Any? {
//        return valueHelp
//    }
//    operator fun setValue(test: Test, property: KProperty<*>, value: Any?) {
//        valueHelp = value
//    }
//
//}

//data class Vector2D(val x: Double, val y: Double) {
//    //定义一个名为 plus 的中缀函数来模拟向量加法
//    infix fun plus(other: Vector2D): Vector2D {
//        return Vector2D(this.x + other.x, this.y + other.y)
//    }
//}

open class AAA
class BBB: AAA()
class CCC: AAA()

data class Data<T>(
    val data: T?
)

fun test(data: Data<out AAA>) {
}

//fun longTimeTask() {
//    //执行一个耗时的任务
//}


fun main() {
    runBlocking {
        val result = withContext(Dispatchers.Default) {
            1 + 1
        }
        println(result)
    }
}

//fun main() {
//    runBlocking {
//        async {
//            "ok1"
//        }.await()
//        async {
//            "ok2"
//        }.await()
//    }
//}






